package com.dkm.orproject.dkmoa.action;

import com.dkm.orproject.dkmoa.domain.OaLog;
import com.dkm.orproject.dkmoa.domain.OaPersonnel;
import com.dkm.orproject.dkmoa.service.OaLogService;
import com.dkm.orproject.utils.jwt.login.UserLoginToken;
import com.dkm.orproject.utils.utils.Tools;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @ClassName : OaLogAction  //类名
 * @Description : 日志Action  //描述
 * @Author : 易嵘  //作者
 * @Date: 2020-07-30 15:02  //时间
 */
@RestController
@RequestMapping("OaLogAction")
public class OaLogAction {

    /**
     * 日志service
     */
    @Resource
    OaLogService logService;

    /**
     * 分页查询
     * @param log 日志模型用于条件查询
     * @param page 当前页数
     * @param limit 显示行数
     * @param startDate 开始时间
     * @param endDate 结束时间
     * @return 查询结果
     */
    @UserLoginToken
    @GetMapping("findAll")
    public Map<String,Object> findAll(OaLog log,Integer page,Integer limit,String startDate,String endDate){
        //分页查询集合
        List<OaLog> logs=logService.findAll(log,page,limit,startDate,endDate);
        //查询总行数
        Long rowCount=logService.rowCount(log,startDate,endDate);
        //返回集合
        return Tools.maps(logs,rowCount);
    }

    /**
     * id查询
     * @param id 日志id
     * @return
     */
    @UserLoginToken
    @GetMapping("findById/{id}")
    public OaLog findById(@PathVariable("id") Long id){
        return logService.findById(id);
    }

    /**
     * id删除
     * @param id 日志id
     * @return 回调函数
     */
    @UserLoginToken
    @DeleteMapping("deleteById/{id}")
    public Map<String,Object> deleteById(@PathVariable("id")Long id){
        return logService.deleteById(id);
    }

    /**
     * 批量删除
     * @param ids 日志id数组
     * @return 回调函数
     */
    @UserLoginToken
    @DeleteMapping("deleteAll")
    public Map<String,Object> deleteAll(@RequestParam(value = "ids[]",required = false)Long[] ids){
        return logService.deleteAll(ids);
    }

    /**
     * 新增日志
     * @param log 日志模型
     * @param request 服务器请求
     * @return 回调函数
     */
    @UserLoginToken
    @PostMapping("addLog")
    public Map<String,Object> addLog(OaLog log, HttpServletRequest request){
        Map<String,Object> map =new HashMap<>(16);
        try{
            HttpSession session= request.getSession();
            //获取当前操作人
            OaPersonnel personnel= (OaPersonnel) session.getAttribute("user");
            log.setLogIp(request.getRemoteAddr());
            log.setCreatedBy(personnel.getPersonnelName());
            log.setLogType("1");
            //新增日志
            int row=logService.addLog(log);
            if(row>0){
                map.put("code",1);
                map.put("mag","新增成功");
            }else{
                map.put("code",0);
                map.put("mag","新增失败");
            }
        }catch (Exception e){
            map.put("code",500);
            map.put("mag",e.getMessage());
        }
        return map;
    }
}
